package com.ssm.dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.ssm.entity.Article;
import com.ssm.entity.ArticleCategory;
import com.ssm.entity.ArticleTag;

@Repository
public interface IArticleDao {
    // 查询所有文章
    public List<Map<String, Object>> findAll();
    
    // 根据用户ID查询文章
    public List<Map<String, Object>> findByUser(int uid);
    
    // 根据ID查询文章
    public Article getById(int aid);
    
    // 添加文章
    public int add(Article article);
    
    // 更新文章
    public int update(Article article);
    
    // 删除文章
    public int delete(int aid);
    
    // 查询文章数量
    public int count();
    
    // 查询用户的文章数量
    public int countByUser(int uid);
    
    // 查询所有分类
    public List<ArticleCategory> findAllCategories();
    
    // 根据ID查询分类
    public ArticleCategory getCategoryById(int cid);
    
    // 查询父级分类
    public List<ArticleCategory> findParentCategories();
    
    // 添加分类
    public int addCategory(ArticleCategory category);
    
    // 更新分类
    public int updateCategory(ArticleCategory category);
    
    // 删除分类
    public int deleteCategory(int cid);
    
    // 查询所有标签
    public List<ArticleTag> findAllTags();
    
    // 根据ID查询标签
    public ArticleTag getTagById(int tid);
    
    // 添加标签
    public int addTag(ArticleTag tag);
    
    // 更新标签
    public int updateTag(ArticleTag tag);
    
    // 删除标签
    public int deleteTag(int tid);
    
    // 查询文章的标签
    public List<ArticleTag> getArticleTags(int aid);
    
    // 添加文章标签关联
    public int addArticleTag(int aid, int tid);
    
    // 删除文章标签关联
    public int deleteArticleTag(int aid, int tid);
    
    // 查询标签被引用的次数
    public int countTagUsage(int tid);
    
    // 查询分类下的文章数量
    public int countArticleByCategory(int cid);
    
    // 查询分类的子分类数量
    public int countChildCategories(int cid);
} 